package leetcode.D100.T88;

class Solution {
    // 一刷
    /*public void merge(int[] nums1, int m, int[] nums2, int n) {
        int[] temp = Arrays.copyOf(nums1, m);
        int p = 0, q = 0, t = 0;
        while(p < m && q < n) {
            if(temp[p] <= nums2[q]) {
                nums1[t++] = temp[p++];
            } else {
                nums1[t++] = nums2[q++];
            }
        }
        while(p < m) {
            nums1[t++] = temp[p++];
        }
        while(q < n) {
            nums1[t++] = nums2[q++];
        }
    }*/

    // 二刷
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int i = m-1, j=n-1, k=m+n-1;
        while (i >= 0 && j >= 0) {
            if (nums1[i] >= nums2[j]) {
                nums1[k--] = nums1[i--];
            } else {
                nums1[k--] = nums2[j--];
            }
        }
        while(i >= 0) {
            nums1[k--] = nums1[i--];
        }
        while (j >= 0) {
            nums1[k--] = nums2[j--];
        }
    }
}